Q调查丨技术人都是怎样走上编程之路的?
在2015年7月份进行的一项名为“从个人特质、个人倾向和个人偏好的角度重新描述年轻时的自己”的调查中,有超过2200名程序员和开发者踊跃参与到其中,发起人说,主要是想了解这些人在年轻的时候,是什么因素引导他们最终选择了计算机科学专业。这项由Code School委托发起的活动最后得出的结论是:这些程序员和开发者平均在16岁的时候就已经对计算机产生了浓厚的兴趣了。除此之外,还有一些别的发现:
一般男性在15岁或之前就已经开始接触电脑了,而女性则在16岁或更晚。
被调查人群中,占比例最高的83%男性最爱仍然是电脑,其次是61%的人最爱是体育,59%的男性最爱是音乐。女性调查者中63%的最爱是音乐,而喜欢计算机的只有52%。
女性当中很少有人拖延,而男性中有41%的人会等到最后一分钟才做作业。
女性中只有7%的人会辍学,是男性的一半。此外,多数女性能够获得学士学位(51%)或研究生学位(30%),相比之下,男性只有27%和42%的人能获得上述学位。
谈到收入这个敏感话题,32%的女性更倾向于5-10万美元的稳定年薪,只有17%的女性朝着10+万美元年薪努力。而在男性方面则出现了两极分化现象,25%的人年薪超过10万美元,而20%的人年薪少于2.5万美元。
随后,InfoQ网站也做了一个类似的调查:您是如何开始编码的?这个调查主要是通过社会化媒体渠道在读者中进行推广,包含三个问题:什么时候开始编码的?你的第一台电脑是什么?你喜欢编码吗?最后根据120多名参与者的反馈得出了一些结论:
InfoQ读者群中开始编码的年龄段在5-30岁之间。
45%的回复者开始编码是在10-14岁之间。
总体上的编码年龄段在14岁。
InfoQ的读者开始编码年龄5和30之间。
36%的年轻读者刚开始工作都是在Windows上,19%相对年纪大一点的程序员使用的是Commogore,14%的开发者使用的是Spectrum,只有少数的5%在大型机上工作。
当谈及喜欢编程的原因时,可以精简为:实现自己的创造力(35%),解决实际问题(16%),被编程的神奇所吸引(15%)。有的人从事编程完全是因为兴趣,而有的人从30岁开始编程则是为了赚钱生活。
InfoQ的读者中有很多都是经验丰富的软件架构师、研发团队领导或自由职业者。我们通过邮件采访的形式和他们进行了沟通,并将他们的在早期是如何开始编码的故事呈现给大家。
Ben Evans,jClarity联合创始人
在我8岁生日的时候,父母给我买的生日礼物就是ZX Spectrum(上世纪80年代一款标志性的计算机)。我父亲在上世纪60年代编写了IBM S/360系统的程序。也正是在我8岁的那一年,为了生活的更好,举家搬到了Cornwall(英国康沃尔郡),父亲成了一名电视工程师。他认为,由英国广播公司、Commodore和Spectrum这三家公司发起的“家庭电脑”潮流是一个非常重要的风向标,有可能引领接下来的科技走向,所以他和我妈妈凑钱给我买一台电脑。
我用这台电脑学会了Spectrum BASIC和Z80 assembler,此外还订阅了一个包含程序清单的电脑杂志。很荣欣,Spectrum在转移到PC端之前的几代版本我都使用过,只是后来由于钱的问题退而求其次买了286英镑的没有显卡的电脑,搭配上相当便宜的Hercules监控适配器,用起来还是相当不错的,也是一段很好的回忆。
在大学里学习了PASCAL高级程序设计语言和一些基础的C语言,足够去写一些简单的“Light Tracer”/Snake克隆。但是后来我对PASCAL有些沮丧,而且我不想以这种技术来开始我的职业生涯,所以,我最后选择了学习数学。
在大学里,我侵入了连接大学和JANET之间的基层接入网络,所以我可以轻而易举的连接到早期基于telnet的聊天服务,这重新点燃了我对C语言的兴趣,尤其是当时第一次听到Perl编程语言。我说服我的导师在一个UNIX帐户上签字,并且有一个可以打到家里的拨入号码,也就是在第一学期结束时,我发现我父亲的新工作是用远程方式来减少文书工作的,每天工作结束时都要在Windows 3.1版本的笔记本上下载字段调用。
后来我学会了Dijkstra算法并掌握了足够的图形理论知识,在班级里面保持领先水平。学期末,Dijkstra问我是否愿意到另一个班级听一种新的编程语言——Java。
首次品尝Java之后,研究生办公室问我为什么不选择更高薪水的编程工作,而到学校里任教。后来经过思考,我决定到公司里做一些跟Perl和JavaScript相关的网站工作。实际上,在那个时候我也开始与一些朋友搞在线音乐杂志的事情。在当时(1997-1998)这也是一件很新奇的东西,所以很多唱片公司乐意送我们黑胶唱片和音乐会门票。从运作杂志和运行网站程序当中获得了很多乐趣,尤其是在这其中,我的乐趣给我带来了经济收益。
Charles Humble,InfoQ首席编辑
记得我9岁那年的一个暑假,我借一个朋友的ZX Spectrum开始编程,想想自己那个时候真是好奇心很重啊。于是在我10岁圣诞节的时候,父母给我买了一台Commodore 64。虽然我当时特别想要一只小狗,但拿到这么先进的玩物后,还是很兴奋!不管怎样,这是我学的主要机器。
于是我开始学习Commodore Basic,但刚开始的时候想用Basic语言在这个Commodore上写一个Elite克隆和一个高分辨率支持的克隆简直是太慢了,可以说是出奇的慢啊!所以我放弃了编写assembler,坦率的说,Commodore Basic汇编程序在移动编码组件上很稳定,基本上没什么大的跳跃。我的Elite克隆是最后废掉了,但它有一个很奇怪的声音轨道。Commodore 64也有一个惊人的音效芯片,通过设计,振荡器的输出信号甚至从未停止过。这算得上是一个设计缺陷。
在学校学习的时候有一个BBC的模型,我经常在上面编写字节代码。后来有一个基于RISC系统的Acorn Archimedes计算机也为我的编程提供了很多便利,(RISC是Acorn Computers为Archimedes和RISC计算机开发的操作系统,由于存储在ROM中所以启动只需几秒钟)。紧随其后,在学校里就能够接触到Windows、C和C++语言了,而我的第一份编码工作就是为一家出版公司在Excel和Access里编写VBA。Java在银行里可谓会最好的归宿。
Abraham Marín Pérez,Java程序员、敏捷开发拥趸者
我8岁的时候,父亲在办公室当会计,有的时候星期六早上也去工作,所以我有机会跟他一起去办公室用电脑。当时的电脑还用5”1/4软盘,其中有一些游戏。我当时最喜欢的程序是AccuType,学习触摸式打字(touch-type),这意味着我在9岁之前就可以不看键盘打字了。
后来我的表弟有了一台Amstrad计算机,其实就是一块扁平的键盘,需要用一个看上去很古怪的软盘跟电视连接起来用。这里面有一个可以学习BASIC程序的书,只有9岁的我们就按照这本给专业程序员制定的书自学编程。我们只能一边看书一边拾取代码的随机样本,并复制下来看看都是什么功能:有时会画一个圆,有时会打印一系列数字……
直到有一天我复制了一段在屏幕上绘制矩形的代码,然后写下书中的另一段代码,一个长方形出现了,这让我到,两个代码段基本相同,唯一的区别就是数字变化了。接着开始写三分之一代码块,只把数字改变,就能出现不同的形状。虽然那个时候根本不知道里面的深奥秘密,但是我心里清楚,不管要什么形状,都必须准确的告诉计算机。
最终我有了属于自己的电脑,一个100MHz 顶配的generic i486,400MB硬盘和4MB内存。那个时候就在开始在学校学习BASIC编程,这是我当时最大的乐趣,我还记得写出来的第一块代码(或更确切的说是脚本)是一个批量脚本:我当时把一些游戏存储在硬盘上,然后我老爸说游戏太占内存,要删除。于是我自己写脚本将这些游戏压缩、解压缩、运行。只记得这是在MS-DOS上完成的,现在想起来还是很有成就感的。
另外一件感觉很有意义的但是很简单的事情就是,帮我老爸的电脑设置个人权限。因为当时的电脑就像是一台电视或VCR,只能打开、使用,所有程序都是基于MS-DOS,为了不让别的同事随意使用它,我就帮我老爸写了一个简单的程序,用BASIC编了一个密码,这样就只能给有密码的人使用。
奇怪的是,虽然我的第一份工作是跟Flash和ActionScript相关的编程工作,但我对这些工作内容没什么感觉。我不喜欢编程的那种感觉,更喜欢画一些框框,把代码片段嵌入进去。随后的工作是跟一个“将COBOL翻译成Java语言”相关的代码库,我称它为Javol。也正是这份工作的需要,我不得不逼迫自己学习一些COBOL知识,这样才能正确理解运作原理。之后我到了一家银行工作,并施展了我的各种编程能力:将Excel表格与数据库相连;VBA和手写的XML解析器连接;用C#将VBA代码嵌入Word文档等等。这份工作我一直做到现在。
Ralph Winzinger,Senacor Technologies首席架构师
其实我小的时候也是一个乡村里土包子,我在12岁第一次看到电脑的时候,电脑已经可以放到桌子上了,一个朋友拿来一个相当经典的Commodore C64。刚开始的时候只是为了打游戏,不久就开始自己写游戏了,虽然不知道怎么编写智能的软件程序,但是我们尝试写硬编码的文字冒险。
后来搬家弄丢了我的Commdoore C64,却收获了一台老旧的ZX81 Spectrum——一个带有塑料膜键盘的微型电脑。于是我照着维基百科上的讲解做出了一个乌龟图形和别的东西。
在我15岁的时候,我终于有了我自己电脑——一台带有1571个软盘驱动器的Commodore C128。之后我就花了很对时间开始创建一个可以管理音频磁带的软件,这是我创建的第一个大型系统。
在上大学期间,我一边学习Java语言一边打理我的日常业务。和大多数学生一样,靠编程赚钱。而在当时,我主要是为掌上电脑编写程序,这也是我跟移动世界联系的收个入口。从那以后我就迷上了WAP手机,尤其是在我把移动方案应用在家乡公共交通规划中的时候。
事实上,无论开发者从什么年龄段开始从事编程,也不管开始学习编程之前是做什么工作的,只要他们敲下第一行代码,就证明这个人是很有激情的,至少他们愿意花大量的时间时间学习语法,锻炼编码技能,并为这个世界创造优秀的软件。
更多干货内容,敬请关注InfoQ[id:infoqchina]微信公众号